﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Zimmerreservierung.Model;
using System.Data.SQLite;
using Zimmerreservierung.Controller;

namespace Zimmerreservierung.Forms
{
    public partial class FormRechnungDetails : Form
    {
        private SQLiteConnection connection;
        
        public FormRechnungDetails(int rechnungsId)
        {
            InitializeComponent();
            KundenController kundenController = KundenController.getInstance();
            RechnungController rechnungController = RechnungController.getInstance();
            ZimmerController zimmerController = ZimmerController.getInstance();
            Rechnung rechnung = rechnungController.GetRechnung(rechnungsId);
            Kunde kunde = kundenController.GetKunde(rechnung.Kunde.Id);
            List<Reservierung> reservierungen = rechnungController.GetReservierungen(rechnungsId);

            kname.Text = kunde.Name;
            kfirmenadresse.Text = kunde.Firmenname;
            kadresse.Text = kunde.Adresse;
            rnr.Text = rechnungsId.ToString();

            Datum.Text = rechnung.Datum.ToString();

            ust.Text = (rechnung.Preis * 0.2).ToString();

            preis.Text = rechnung.Preis.ToString();
            Rabatt.Text = kunde.Rabat.ToString();

            List<RechnungsItem> dataSource = new List<RechnungsItem>();
            foreach (Reservierung res in reservierungen)
            {
                RechnungsItem item = new RechnungsItem();
                item.Anfangsdatum = res.Startdatum;
                item.Enddatum = res.Enddatum;
                item.Fruehzeitig = res.FruehzeitigesEnddatum;

                item.Preis = res.Storniert == false ? res.Zimmerpreis : (res.Zimmerpreis / 100.0 * 10.0);
                
                item.Storniert = res.Storniert;

                item.Zimmer = zimmerController.GetZimmer(res.Zimmer.Id).Name;
                dataSource.Add(item);
            }

            
            dataGridView1.DataSource = dataSource;

            dataGridView1.Columns[4].ReadOnly = true;
            
        }

        private void FormRechnungDetails_Load(object sender, EventArgs e)
        {

        }

        private void label5_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button1.Visible = false;
            button2.Visible = false;
            printForm1.Print();
            button1.Visible = true;
            button2.Visible = true;
        }
    }
}
